import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'

// https://vite.dev/config/
export default defineConfig({
	plugins: [vue()],

	// 路径别名配置
	resolve: {
		alias: {
			'@': '/src',
		},
	},

	// 开发服务器配置
	server: {
		host: '0.0.0.0', // 允许外部访问
		port: 8081, // 开发服务器端口
		open: true, // 自动打开浏览器
		cors: true, // 允许跨域
		// 代理配置
		proxy: {
			// 代理所有 /api 请求到后端服务器
			'/api': {
				target: 'http://192.168.50.130:31413',
				changeOrigin: true,
				secure: false,
				rewrite: (path) => path.replace(/^\/api/, ''), // 重写路径，去掉 /api 前缀
			},

			// 代理微信小程序相关 API
			'/wxapi': {
				target: 'http://192.168.50.109:9080',
				changeOrigin: true,
        
				rewrite: (path) => path.replace(/^\/wxapi/, '')
			},

			// 代理上传文件接口
			'/upload': {
				target: 'http://localhost:3001',
				changeOrigin: true,
				secure: false,
			},

			// 代理 WebSocket 连接
			'/ws': {
				target: 'ws://localhost:3002',
				ws: true, // 启用 WebSocket 代理
				changeOrigin: true,
			},

			// 代理静态资源
			'/static': {
				target: 'http://localhost:3003',
				changeOrigin: true,
				secure: false,
			},

			// 代理第三方服务（如支付接口）
			'/pay-api': {
				target: 'https://api.pay.example.com',
				changeOrigin: true,
				secure: true,
				rewrite: (path) => path.replace(/^\/pay-api/, '/api'),
				headers: {
					Authorization: 'Bearer your-token-here',
				},
			},
		},
	},

	// 预览服务器配置（用于 vite preview）
	preview: {
		host: '0.0.0.0',
		port: 4173,
		cors: true,
		// 预览模式下的代理配置
		proxy: {
			'/api': {
				target: 'http://localhost:3000',
				changeOrigin: true,
				secure: false,
			},
		},
	},

	// 构建配置
	build: {
		// 输出目录
		outDir: 'dist',
		// 静态资源目录
		assetsDir: 'assets',
		// 小于此阈值的导入或引用资源将内联为 base64 编码
		assetsInlineLimit: 4096,
		// 启用/禁用 CSS 代码拆分
		cssCodeSplit: true,
		// 构建后是否生成 source map 文件
		sourcemap: false,
		// 设置最终构建的浏览器兼容目标
		target: 'es2015',
		// 启用/禁用 gzip 压缩大小报告
		reportCompressedSize: true,
		// chunk 大小警告的限制（以 kbs 为单位）
		chunkSizeWarningLimit: 2000,
	},

	// CSS 预处理器配置
	css: {
		preprocessorOptions: {
			less: {
				// 全局导入 Less 变量文件
				additionalData: `@import "@/styles/variables.less";`,
				// 启用 JavaScript
				javascriptEnabled: true,
			},
		},
	},

	// 优化配置
	optimizeDeps: {
		// 预构建包含的依赖
		include: [
			'vue',
			'vue-router',
			'pinia',
			'element-plus',
			'@element-plus/icons-vue',
			'axios',
		],
	},
})
